home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 001a / robo40_a.zip / SCRIPT.DOC < prev    next >
Text File  |  1992-02-12  |  65KB  |  1,705 lines

  1.                       
  2.  
  3.         ┬─┬─────┐
  4.         │ │     │
  5.         │ ├───┬─┘ ┌┬──┐ ┬┬─┐  ┌┬──┐ ┌┬──┐ ┌┬──┐ ┌┬─┬─┐ ┌┬─┬─┐  (tm)
  6.         │ │   │   ││  │ │├─┴┐ ││  │ ││    ││  │ ││ │ │ ││ │ │
  7.         ┴─┴   ┴── └┴──┘ ┴┴──┘ └┴──┘ └┴──┘ └┴──┘ ┴┴ ┴ ┴ ┴┴ ┴ ┴
  8.  
  9.         The ultimate tool for unattended           ┬  ┌┐ ┌─┬┐
  10.         BBS communications.                        └──┤│ │ ││
  11.                                                       └┘o└─┴┘
  12.                       
  13.                       ┌────────────────────────────┐
  14.                       │  Script Language Reference │
  15.                       └────────────────────────────┘
  16.  
  17.  
  18.  
  19.  
  20.                   (c) Copyright 1992, Parsons Consulting
  21.  
  22.  
  23.  
  24.  
  25.  
  26.           Table of Contents                                                
  27.  
  28.  
  29.           ROBOCOMM 4.0 SCRIPT PROCESSING ...............................  1
  30.           INTRODUCTION .................................................  1
  31.           SCRIPT COMMENTS ..............................................  1
  32.           DOCUMENTATION SYNTAX .........................................  1
  33.           LABELS .......................................................  2
  34.           MACROS .......................................................  2
  35.           PARAMETERS ...................................................  3
  36.           SCRIPT COMMANDS ..............................................  4
  37.           CAPTURE "<cFile>" [OVERWRITE | APPEND] .......................  4
  38.           CD "<cDirectory>" ............................................  5
  39.           CLEAR [WATCHES] ..............................................  5
  40.           CLOSE ........................................................  5
  41.           COPY "<cSource>" [TO "<cTarget>"] ............................  6
  42.           DELAY <nSeconds> .............................................  6
  43.           DISABLE <nWatch> .............................................  7
  44.           DOWNLOAD ["<cFileSpec>"] [USING "<cProtocol>"] ...............  7
  45.           ENABLE <nWatch> ..............................................  8
  46.           ERASE "<cFile>" ..............................................  9
  47.           EXIT <nReturnVal> ............................................  9
  48.           GOSUB <label> ................................................  9
  49.           GOTO <label> ................................................  10
  50.           HANGUP ......................................................  10
  51.           IF [NOT] <condition> ["<argument>"] <command> ...............  11
  52.           EMPTY .......................................................  11
  53.           EXIST .......................................................  11
  54.           DAY .........................................................  11
  55.           DIR .........................................................  11
  56.           CONNECTED ...................................................  12
  57.           ERRORLEVEL ..................................................  12
  58.           IMPORT ["A"|"D"] "<cFile>" [EXISTONLY] ......................  12
  59.           JOIN "<cConference>" ........................................  13
  60.           MD "<cDirectory>" ...........................................  13
  61.           MESSAGE "<cString>" .........................................  13
  62.           NOTES "<cFile>" .............................................  14
  63.           PARAMETER [nNumber] "<cPrompt>" .............................  14
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.                                         - i -
  85.  
  86.  
  87.  
  88.  
  89.  
  90.           Table of Contents                                                
  91.  
  92.  
  93.           PASSWORD "<cPassword>" ......................................  14
  94.           RD "<cDirectory>" ...........................................  14
  95.           RENAME "<cfile>" [TO] "<cNewName>" ..........................  15
  96.           RENUMBER "<cFile>" [<nCount>] ...............................  15
  97.           RETURN ......................................................  15
  98.           RUN "<cDosCommand>" [KEYBOARD "<cKeyString>"] ...............  16
  99.           SEND "<cString>" ............................................  20
  100.           SOUND <nFrequency> <nDuration> ..............................  21
  101.           STATISTICS "<cFile>" ........................................  22
  102.           TERMINAL ....................................................  22
  103.           TIMEOUT <nSeconds> ..........................................  22
  104.           TITLE "<cString>" ...........................................  22
  105.           UPLOAD "<cFileSpec>" [USING "<cProtocol>"] ..................  23
  106.           VENUE "<cVenueCode>" ........................................  23
  107.           WAITFOR "<cString>" [FAILURE <command>] .....................  24
  108.           WAITUNTIL ["<cTime>"] ["<cDate>"] ...........................  25
  109.           WHEN "<cString>" <command> ..................................  25
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.                                        - ii -
  145.  
  146.  
  147.  
  148.           
  149.  
  150.  
  151.            I. Robocomm 4.0 Script Processing
  152.  
  153.                * INTRODUCTION
  154.                  
  155.                  Robocomm's script processing system is a high level
  156.                  interpreted language designed to extend the automation
  157.                  capabilities of the software in instances where the
  158.                  pre-defined "Agenda Items" do not perform the service
  159.                  required.
  160.                  
  161.                  If you have done any programming at all on the PC, even at
  162.                  the batch file level, then Robocomm's script language
  163.                  should be fairly intuitive and straight-forward.  The
  164.                  script commands are processed sequentially with the
  165.                  ability to jump to "labels" like DOS batch files using
  166.                  GOTO and GOSUB statements like BASIC programs.  
  167.                  
  168.                  Perhaps the most significant capability of the script
  169.                  language is its ability to prompt the user for an
  170.                  unlimited number of parameters from the agenda
  171.                  creation/editing screen.  This allows for a great deal of
  172.                  flexibility in the creation of "generic" scripts that will
  173.                  work on a wide variety of systems.  At the time the
  174.                  "Execute Script" agenda item is created, the script itself
  175.                  asks the user to supply any needed information that is
  176.                  specific to the script run, such as a door number or a
  177.                  file name.
  178.                  
  179.                  In addition, all of the prompt definitions and other
  180.                  BBS-Specific information for each BBS can be accessed from
  181.                  within the script, allowing the script author to limit the
  182.                  amount of "hard coded" search text within the script.  
  183.                  
  184.                  What all of this means is that it is now possible for
  185.                  people to create their own generic "agenda items" with
  186.                  Robocomm's script language.  These scripts can then be
  187.                  distributed and run without modification by other Robocomm
  188.                  users!
  189.                  
  190.  
  191.                * SCRIPT COMMENTS
  192.                  
  193.                  You may place non-executable descriptive text anywhere you
  194.                  like within a script file, as long as it is on a line by
  195.                  itself and is preceded by a semicolon.
  196.                  
  197.  
  198.                * DOCUMENTATION SYNTAX
  199.  
  200.  
  201.  
  202.  
  203.           _________________________________________________________________
  204.           Robocomm 4.0 - Script Language Reference                 Page: 1
  205.  
  206.  
  207.  
  208.  
  209.           
  210.  
  211.  
  212.                  
  213.                  As you read through this documentation, places where a
  214.                  command argument is to be entered by the script author are
  215.                  indicated between angle brackets <like this>.  Text
  216.                  between angle brackets and also surrounded by quotation
  217.                  marks indicates that the script author is to input a word
  218.                  surrounded by quotation marks:
  219.                  
  220.                  "<cFile>"  --> "robocomm.cap"
  221.                  
  222.                  Reserved Words (or COMMANDS) appear in all UPPER CASE.
  223.                  Optional command arguments are surrounded by square
  224.                  brackets [LIKE THIS].  When a choice between one or more
  225.                  command arguments is required, all available options will
  226.                  be listed, separated by the pipe symbol.  Thus, an
  227.                  optional command argument with three choices will look
  228.                  like this: 
  229.                  
  230.                  [ SEVERAL | OPTIONAL | COMMANDS ]
  231.                  
  232.  
  233.                * LABELS
  234.                  
  235.                  Labels in Robocomm scripts are created by starting a line
  236.                  with a colon character.  Many script commands allow
  237.                  command control to quickly jump forward or backward within
  238.                  a script file be referencing a label name.  Labels must be
  239.                  on a line all by themselves.  Robocomm will use all text
  240.                  contained between the colon character and the first space
  241.                  or end of line as the label name.  The following are all
  242.                  examples of valid label lines:
  243.                  
  244.                  :ERROR (something must have gone wrong)
  245.                  :start
  246.                  :This-Is-An-Example-Of-A-Very-Long-Label-Indeed!
  247.                  
  248.  
  249.                * MACROS
  250.                  
  251.                  Most commands ask for text to be supplied as an argument.
  252.                  Whenever that text is contained within quotes, several
  253.                  "macros" can be used with specific meanings.  All Robocomm
  254.                  script macros are indicated by surrounding text by percent
  255.                  signs.  At script run-time, these macros will be replaced
  256.                  with the appropriate text before being used by the
  257.                  specified script command.
  258.                  
  259.  
  260.  
  261.  
  262.  
  263.           _________________________________________________________________
  264.           Robocomm 4.0 - Script Language Reference                 Page: 2
  265.  
  266.  
  267.  
  268.  
  269.           
  270.  
  271.  
  272.                  1. %ID% - Translated to the BBS ID of the currently
  273.                     connected BBS.
  274.  
  275.                  2. %QWKDIR% - Translated to the configured download
  276.                     directory for mail packets.
  277.  
  278.                  3. %REPDIR% - Translated to the configured directory for
  279.                     outgoing replies.
  280.  
  281.                  4. %DLDIR% - Translated to the configured file download
  282.                     directory.
  283.  
  284.                  5. %ULDIR% - Translated to the configured file upload
  285.                     directory.
  286.  
  287.                  6. %DOW% - Translated to three characters indicating the
  288.                     current day of the week:  MON,TUE,WED,THU,FRI,SAT,SUN
  289.  
  290.                  7. %DOM% - Translated to two numeric characters indicating
  291.                     the current day of the month.  Range 01-31.
  292.  
  293.                  8. %MONTH% - Translated to three characters indicating the
  294.                     current month:
  295.                     JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
  296.  
  297.                  9. %NMONTH% Translated to two numeric characters
  298.                     indicating the month of the year.
  299.  
  300.                 10. %YEAR% - Translated to 4 numeric characters indicating
  301.                     the current year, e.g. 1991
  302.  
  303.                 11. %BBS##% - Translated to field number ## from the
  304.                     Directory-BBS record for the currently connected BBS.
  305.                     See Appendix "A" for a complete list of the BBS##
  306.                     macros.
  307.  
  308.                     a) ## is the field from BBS40.DBF to return.
  309.  
  310.                 12. %P##% - Translated to the text parameter number ##,
  311.                     which was entered by the user when he/she created the
  312.                     currently running "execute script" agenda item.
  313.  
  314.                 13. %WC#% - Translated to Wildcat Command number #.
  315.  
  316.                * PARAMETERS
  317.                  
  318.                  With Robocomm, you can set up scripts which prompt the
  319.                  user for input when an "Execute Script" agenda item is
  320.  
  321.  
  322.  
  323.           _________________________________________________________________
  324.           Robocomm 4.0 - Script Language Reference                 Page: 3
  325.  
  326.  
  327.  
  328.  
  329.           
  330.  
  331.  
  332.                  being created.  To do this, simply embed a statement
  333.                  similar to the following in your script file:
  334.                  
  335.                  PARAMETER "Enter your mother's maiden name:"
  336.                  
  337.                  When the user is creating the agenda, Robocomm will pause
  338.                  and ask the question specified between the quotes on the
  339.                  parameter line.  The user will be allowed to enter up to
  340.                  128 characters of any type in response to the question.
  341.                  
  342.                  To access the text input by the user, the script author
  343.                  embeds %P##% into his/her script file at any location
  344.                  where double quotes are to surround text. In the text
  345.                  above, ## represents the parameter number you wish to
  346.                  access. 
  347.                  
  348.                   Continuing our example, to send the user's mother maiden
  349.                  name to the BBS you would use the following script
  350.                  command:
  351.                  
  352.                  SEND "%P1%
  353.                  
  354.                  In the example above the number "1" is specified to access
  355.                  the parameter text input in response to the first
  356.                  PARAMETER statement which is contained in the file.  It is
  357.                  important to understand that Robocomm numbers the
  358.                  parameters so that they correspond to the same order as
  359.                  the PARAMETER statements within the text file.  For a
  360.                  working example of PARAMETERs, examine the file
  361.                  SET_PCB.RS.
  362.                  
  363.  
  364.           II. Script Commands
  365.  
  366.                * CAPTURE "<cFile>" [OVERWRITE | APPEND]
  367.                  
  368.                  Opens capture file <cFile> and closes any capture file
  369.                  previously opened.  
  370.                  
  371.                  Options:  If OVERWRITE is specified, then the contents of
  372.                  any existing <cFile> will be replaced with the captured
  373.                  data.  If APPEND is specified
  374.                  
  375.                  Defaults:  <cFile> defaults to the current BBS ID with a
  376.                  CAP extension.  The file creation mode defaults to APPEND.
  377.                  
  378.                  Example:
  379.                  
  380.  
  381.  
  382.  
  383.           _________________________________________________________________
  384.           Robocomm 4.0 - Script Language Reference                 Page: 4
  385.  
  386.  
  387.  
  388.  
  389.           
  390.  
  391.  
  392.                     CAPTURE "\ROBOCOMM\LOGS\CHESSGAM.CAP" OVERWRITE
  393.                  
  394.                  See Also:
  395.                     CLOSE
  396.                  
  397.  
  398.                * CD "<cDirectory>"
  399.                  
  400.                  Changes the current DOS drive and/or directory to
  401.                  <cDirectory>.
  402.                  
  403.                  Note: The Robocomm home drive and directory is always
  404.                  restored upon termination of script processing.
  405.                  
  406.                  Note: If the specified directory does not exist, Robocomm
  407.                  will make a log notation and abort the script processing.
  408.                  
  409.                  Example:
  410.                  
  411.                     CD "F:\TEMP\LISTS"
  412.                  
  413.                  See Also:
  414.                     MD
  415.                     RD
  416.                  
  417.  
  418.                * CLEAR [WATCHES]
  419.                  
  420.                  Clears all text watches installed via the WHEN command. 
  421.                  
  422.                  Robocomm adds another watch item each time you issue the
  423.                  WHEN command from within a script.  Deactivating a watch
  424.                  with the DISABLE command does not actually remove it from
  425.                  the list of text items which are compared to all incoming
  426.                  text.  The CLEAR command should be used when you wish to
  427.                  discard the entire "watch list."  The next WHEN command
  428.                  issued after a CLEAR will install watch #1.
  429.                  
  430.                  See Also:
  431.                     WHEN
  432.                     WAITFOR
  433.                     DISABLE
  434.                     ENABLE
  435.                  
  436.  
  437.                * CLOSE
  438.                  
  439.  
  440.  
  441.  
  442.  
  443.           _________________________________________________________________
  444.           Robocomm 4.0 - Script Language Reference                 Page: 5
  445.  
  446.  
  447.  
  448.  
  449.           
  450.  
  451.  
  452.                  Closes any open capture file started via the CAPTURE
  453.                  command.  If no capture file is currently active, the
  454.                  command is ignored.
  455.                  
  456.                  See Also:
  457.                     CAPTURE
  458.                  
  459.  
  460.                * COPY "<cSource>" [TO "<cTarget>"]
  461.                  
  462.                  Copies the file <cSource> to <cTarget>.  If <cSource>
  463.                  cannot be opened or <cTarget> cannot be created a notation
  464.                  will be made in ROBOCOMM.LOG and script processing will be
  465.                  terminated.  If <cTarget> already exists when the copy
  466.                  begins, it will be replaced with the contents of
  467.                  <cSource>.  <cTarget> is optional, and if not specified,
  468.                  Robocomm will attempt to create a file with the same name
  469.                  as <cSource> in the current directory.
  470.                  
  471.                  Note:  Attempting to COPY a currently open log or capture
  472.                  file is not possible and will result in the termination of
  473.                  script processing.
  474.                  
  475.                  Examples:
  476.                  
  477.                     COPY "C:\ROBOCOMM\GROUPONE.CAP"
  478.                  "C:\OLDCAPS\GROUPONE.CAP"
  479.                     COPY "%QWKDIR%%ID%.PTR"
  480.                  
  481.                  See Also:
  482.                     ERASE
  483.                     RENAME
  484.                  
  485.  
  486.                * DELAY <nSeconds>
  487.                  
  488.                  Pauses all script processing for <nSeconds>.  No
  489.                  characters are read from the active communications port.
  490.                  Absolutely nothing happens, other than a not-so-dramatic
  491.                  pause.  Keep in mind that the BBS may still be sending
  492.                  characters to Robocomm.  If so, they will be stored in
  493.                  Robocomm's internal communications buffer until the end of
  494.                  the delay period.
  495.                  
  496.                  Note: If you set a long delay period, keep in mind that
  497.                  Robocomm may appear to be "frozen" to some users because
  498.                  the timeout counter in the upper corner of the screen will
  499.                  not update.  If you are worried that some user may
  500.  
  501.  
  502.  
  503.           _________________________________________________________________
  504.           Robocomm 4.0 - Script Language Reference                 Page: 6
  505.  
  506.  
  507.  
  508.  
  509.           
  510.  
  511.  
  512.                  over-react to this condition, consider placing a MESSAGE
  513.                  command to place a notation in the lower log window before
  514.                  the call to DELAY.
  515.                  
  516.                  Example:
  517.                  
  518.                     DELAY 10
  519.                  
  520.  
  521.                * DISABLE <nWatch>
  522.                  
  523.                  Temporarily disable a watch installed via the WHEN
  524.                  command.  The contents of watch number <nWatch> will not
  525.                  be compared against incoming text during subsequent
  526.                  WAITFOR processing.  The watch may be reactivated later
  527.                  with the ENABLE command.
  528.                  
  529.                  Example:
  530.                  
  531.                     DISABLE 5
  532.                  
  533.                  See Also:
  534.                     WHEN
  535.                     WAITFOR
  536.                     ENABLE
  537.                     CLEAR WATCHES
  538.                  
  539.  
  540.                * DOWNLOAD ["<cFileSpec>"] [USING "<cProtocol>"] [RESUMEOK |
  541.                  OVERWRITE]
  542.                  
  543.                  Downloads a file to <cFileSpec> using <cProtocol>.
  544.                  
  545.                  <cFileSpec> may be a complete filename or a download path.
  546.                  If the protocol you select is a batch protocol and the BBS
  547.                  sends a file of a different name than that specified in
  548.                  <cFileSpec>, Robocomm will attempt to rename the file to
  549.                  the specified name after the download is complete.
  550.                  <cFileSpec> defaults to the currently defined file
  551.                  download directory.
  552.                  
  553.                  USING "<cProtocol>" is an optional parameter which
  554.                  specifies the protocol or batch file to use for the
  555.                  transfer.  All of Robocomm's internal protocols, "ZMODEM",
  556.                  "YMODEM" and "YMODEM-G" are valid values for <cProtocol>,
  557.                  as is the name any batch file which uses Robocomm's
  558.                  standard method for communicating with batch files.
  559.  
  560.  
  561.  
  562.  
  563.           _________________________________________________________________
  564.           Robocomm 4.0 - Script Language Reference                 Page: 7
  565.  
  566.  
  567.  
  568.  
  569.           
  570.  
  571.  
  572.                  <cProtocol> defaults to the currently defined file
  573.                  download protocol.
  574.                  
  575.                  If you are using Robocomm's internal ZMODEM protocol, you
  576.                  may inform the protocol that it is OK to attempt to resume
  577.                  an aborted transfer by adding the RESUMEOK directive to
  578.                  the DOWNLOAD command line.  The existing portion of the
  579.                  file will be verified with the sending file and a resume
  580.                  will be attempted if possible.
  581.                  
  582.                  If you anticipate that the DOWNLOAD command will be
  583.                  receiving a file which already exists, then you may
  584.                  specify the OVERWRITE directive to replace the existing
  585.                  file with the file being downloaded.
  586.                  
  587.                  Examples:
  588.                  
  589.                     DOWNLOAD
  590.                  
  591.                  This command will use the currently defined file download
  592.                  path and protocol to receive a file.
  593.                  
  594.                     DOWNLOAD "%ULDIR%" USING "YMODEM-G"
  595.                  
  596.                  Downloads files to your configured file upload directory
  597.                  using Robocomm's internal Ymodem-G.
  598.                  
  599.                     DOWNLOAD USING "ROBORH"
  600.                  
  601.                  Downloads files to the default file download directory
  602.                  using the HS/Link external batch protocol.
  603.                  
  604.                  
  605.                  
  606.  
  607.                * ENABLE <nWatch>
  608.                  
  609.                  Resume processing of a watch previously suspended with the
  610.                  DISABLE command.  If text read from the communications
  611.                  port during a WAITFOR matches the contents of watch number
  612.                  <nWatch> the previously indicated action will be executed.
  613.                  
  614.                  Example:
  615.                  
  616.                     ENABLE 3
  617.                  
  618.                  See Also:
  619.                     WAITFOR
  620.  
  621.  
  622.  
  623.           _________________________________________________________________
  624.           Robocomm 4.0 - Script Language Reference                 Page: 8
  625.  
  626.  
  627.  
  628.  
  629.           
  630.  
  631.  
  632.                     WHEN
  633.                     DISABLE
  634.                  
  635.  
  636.                * ERASE "<cFile>"
  637.                  
  638.                  Erases <cFile> from disk.  No error is returned and script
  639.                  processing will continue normally if <cFile> does not
  640.                  exist.  If <cFile> does exist, it will be deleted.
  641.                  
  642.  
  643.                * EXIT <nReturnVal>
  644.                  
  645.                  Quits script processing and returns to the agenda control
  646.                  level.  If <nReturnVal> is greater than zero, a notation
  647.                  will be made in the log and the "Execute Script" agenda
  648.                  item will be marked with an exclamation mark.  The
  649.                  exclamation mark implies an error, and will prevent the
  650.                  agenda item from being deleted if it has "temporary"
  651.                  status.
  652.                  
  653.                  <nReturnVal> defaults to zero.  If the script returns zero
  654.                  to the agenda processing module, the task will be marked
  655.                  as completed.  This means that if the "Execute Script"
  656.                  agenda item was temporary it will be removed from the
  657.                  agenda on its next "re-set" operation.
  658.                  
  659.  
  660.                * GOSUB <label>
  661.                  
  662.                  Branches control flow to the line following the specified
  663.                  <label>.  Control will remain at the specified level until
  664.                  a RETURN statement is encountered, at which time agenda
  665.                  processing will resume with the first valid command line
  666.                  immediately following the GOSUB statement.  GOSUBs may be
  667.                  nested 4096 levels deep.
  668.                  
  669.                  Example:
  670.                  
  671.                  The following script lines, would send "Robocomm 4.0" to
  672.                  the BBS:
  673.                  
  674.                     GOSUB firstpart
  675.                        SEND "4.0"
  676.                  
  677.                     :FIRSTPART
  678.                        SEND "Robocomm "
  679.                     RETURN
  680.  
  681.  
  682.  
  683.           _________________________________________________________________
  684.           Robocomm 4.0 - Script Language Reference                 Page: 9
  685.  
  686.  
  687.  
  688.  
  689.           
  690.  
  691.  
  692.                  
  693.                  See Also:
  694.                     GOTO
  695.                     RETURN
  696.                  
  697.  
  698.                * GOTO <label>
  699.                  
  700.                  Pass the sauce.  Spaghetti code lives!  The ubiquitous
  701.                  GOTO command will branch script control to the line
  702.                  following the specified <label> and never  look back.
  703.                  It's up to you to keep track of where the program's going
  704.                  when you use GOTOs.
  705.                  
  706.                  Example:  The following code produces an infinite loop,
  707.                  from which Robocomm will never recover without a loving
  708.                  keystroke from you.  
  709.                  
  710.                     :Label1
  711.                        Send "Even robots can get "
  712.                        GOTO Label3
  713.                  
  714.                     :Label2
  715.                        Send "Dizzy!!! |"
  716.                        GOTO Label1
  717.                  
  718.                     :Label3
  719.                        Send "a little bit "
  720.                        GOTO "Label2
  721.                  
  722.                  NOTE: Pressing the F3 "Abort Agenda" or "F1" jump to
  723.                  terminal keys during a runaway script are your escape
  724.                  hatches in instances like these.
  725.                  
  726.                  See Also:
  727.                     GOSUB
  728.                     Two Guys From Italy.
  729.                  
  730.  
  731.                * HANGUP
  732.                  
  733.                  Terminates the current connection by hanging up the modem.
  734.                  Script processing continues after the disconnection with
  735.                  the line following the hangup command.  If a WAITFOR
  736.                  command is issued subsequent to a disconnection, Robocomm
  737.                  will assume that you did not intend to drop carrier and
  738.                  will abort the current script.
  739.                  
  740.  
  741.  
  742.  
  743.           _________________________________________________________________
  744.           Robocomm 4.0 - Script Language Reference                 Page: 10
  745.  
  746.  
  747.  
  748.  
  749.           
  750.  
  751.  
  752.                * IF [NOT] <condition> ["<argument>"] <command>
  753.                  
  754.                  Evaluates <condition> and executes the script command
  755.                  <command> if it is true.  The optional NOT parameter may
  756.                  be added immediately following the keyword IF when you
  757.                  want to execute <command> only when <condition> is not
  758.                  true.
  759.                  
  760.  
  761.                  1. EMPTY
  762.                     
  763.                     Use this command to test the existence of a parameter.
  764.                     If a parameter is not passed (i.e. left blank on the
  765.                     agenda editing screen), then EMPTY will be true.
  766.                     
  767.                     Examples:
  768.                     
  769.                     IF EMPTY "%P1%" GOTO ERROR
  770.                     IF NOT EMPTY "%P2%" SEND "%P2%|"
  771.                     
  772.  
  773.                  2. EXIST
  774.                     
  775.                     Use this test for the existence of a file.
  776.                     
  777.                     Examples:
  778.                     
  779.                     IF EXIST "C:\QWKS\GROUPONE.KEY" GOTO SENDKEY
  780.                     IF NOT EXIST "%ID%.RLY" GOSUB GETMSGS
  781.                     IF EXIST "ALLFILES.ZIP" RENAME "ALLFILES.ZIP" TO
  782.                     "ALLFILES.OLD"
  783.                     
  784.  
  785.                  3. DAY
  786.                     
  787.                     Robocomm can test today's day of week with the use of
  788.                     any of these keywords.
  789.                     
  790.                     Examples:
  791.                     
  792.                     IF NOT DAY "SUN" GOTO WORK
  793.                     IF DAY "SUN" GOTO CHURCH
  794.                     IF DAY "MON" RENAME "BULL_1.CAP" TO "BULL_1.MON"
  795.                     
  796.  
  797.                  4. DIR
  798.                     
  799.  
  800.  
  801.  
  802.  
  803.           _________________________________________________________________
  804.           Robocomm 4.0 - Script Language Reference                 Page: 11
  805.  
  806.  
  807.  
  808.  
  809.           
  810.  
  811.  
  812.                     Use this option test for the existence of a
  813.                     subdirectory on a disk.
  814.                     
  815.                     Examples:
  816.                     
  817.                     IF DIR C:\SCRIPTDIR\TEMP\ GOTO KILLDIR
  818.                     
  819.                     IF NOT DIR \TEMP MD \TEMP
  820.  
  821.                  5. CONNECTED
  822.                     
  823.                     Tests if the modem is currently connected with a BBS
  824.                     system.
  825.                     
  826.                     Examples:
  827.                     
  828.                     IF CONNECTED SEND "BYE|"
  829.                     IF NOT CONNECTED GOSUB CLEANUP
  830.                     
  831.  
  832.                  6. ERRORLEVEL
  833.                     
  834.                     Tests to see is the last command executed with the RUN
  835.                     command set an errorlevel greater than zero.
  836.                     
  837.                     IF ERRORLEVEL GOTO TRYAGAIN
  838.                     IF NOT ERRORLEVEL GOTO SUCCESS
  839.                     
  840.  
  841.                * IMPORT ["A"|"D"] "<cFile>" [EXISTONLY]
  842.                  
  843.                  This command allows you to import the <cFile> file listing
  844.                  into Robocomm's "Available Files" or "Downloaded Files"
  845.                  directory.  The optional letter "A" or "D" tells Robocomm
  846.                  which file directory to send the file names to.  By
  847.                  default Robocomm sends file listings to the "Available
  848.                  Files" directory.  The optional EXISTONLY clause tells
  849.                  Robocomm to only import those files that can be located in
  850.                  your configured download, upload or search directories.
  851.                  
  852.                  Examples:
  853.                  
  854.                     IMPORT "D" "VAMPIRE.CAP" EXISTONLY
  855.                  
  856.                  This command tells Robocomm to import VAMPIRE.CAP into the
  857.                  "D"ownloaded files directory, adding only those files to
  858.                  the directory that can be found in any of Robocomm's
  859.                  configured search directories.
  860.  
  861.  
  862.  
  863.           _________________________________________________________________
  864.           Robocomm 4.0 - Script Language Reference                 Page: 12
  865.  
  866.  
  867.  
  868.  
  869.           
  870.  
  871.  
  872.                  
  873.                     IMPORT "GIFS.CAP"
  874.                  
  875.                  This command tells Robocomm to import the file GIFS.CAP
  876.                  into the available files directory.
  877.                  
  878.  
  879.                * JOIN "<cConference>"
  880.                  
  881.                  Attempts to join the conference specified, using the
  882.                  prompts defined on the Directory-BBS-Prompts screen for
  883.                  the currently connected BBS.  Script processing is aborted
  884.                  if the Join attempt is unsuccessful or cannot be verified.
  885.                  
  886.                  Examples:
  887.                  
  888.                     JOIN "0"
  889.                  
  890.                  Attempts to navigate to the "Main Board" prompt.
  891.                  
  892.                     JOIN "Robocomm"
  893.                  
  894.                  Attempts to navigate to the "Robocomm Conference Command"
  895.                  prompt.
  896.                  
  897.  
  898.                * MD "<cDirectory>"
  899.                  
  900.                  Attempts to create a subdirectory named <cDirectory>.
  901.                  
  902.                  Note: If the specified directory cannot be created,
  903.                  Robocomm will make a log notation and abort the script
  904.                  processing.
  905.                  
  906.                  Example:
  907.                  
  908.                     MD "C:\TEMPDOWN"
  909.                  
  910.                  See Also:
  911.                     CD
  912.                     RD
  913.                  
  914.  
  915.                * MESSAGE "<cString>"
  916.                  
  917.                  Posts <cString> as a message in ROBOCOMM.LOG.  
  918.                  
  919.  
  920.  
  921.  
  922.  
  923.           _________________________________________________________________
  924.           Robocomm 4.0 - Script Language Reference                 Page: 13
  925.  
  926.  
  927.  
  928.  
  929.           
  930.  
  931.  
  932.                * NOTES "<cFile>"
  933.                  
  934.                  This command places the contents of <cFile> into
  935.                  Robocomm's internal data structures so that the data can
  936.                  be viewed later via Robocomm's "Notes" command on the
  937.                  Directory-BBS screen.
  938.                  
  939.                  NOTE: Robocomm will not import a file longer than 10,240
  940.                  characters.  Attempts to do so will be ignored.
  941.                  
  942.                  Example:
  943.                  
  944.                     NOTES "%ID%.NOT"
  945.                  
  946.  
  947.                * PARAMETER [nNumber] "<cPrompt>"
  948.                  
  949.                  Defines a parameter question that will be used to prompt
  950.                  the user for input at agenda creation time.  <cPrompt> may
  951.                  be up to 40 characters in length.  The user will be
  952.                  allowed to input up to 128 characters.
  953.                  
  954.                  NOTE: The optional nNumber argument is really only for
  955.                  readability purposes and is not examined by Robocomm at
  956.                  all.  Robocomm numbers parameters sequentially, in the
  957.                  order they are encountered within  the script file.
  958.                  
  959.                  Example:
  960.                  
  961.                  PARAMETER "Heard any good jokes lately?"
  962.                  
  963.  
  964.                * PASSWORD "<cPassword>"
  965.                  
  966.                  Updates the password in the Directory-BBS record for the
  967.                  current BBS with <cPassword>.
  968.                  
  969.                  Example:
  970.                  
  971.                     PASSWORD "NewPass"
  972.                  
  973.  
  974.                * RD "<cDirectory>"
  975.                     
  976.                  Attempts to remove subdirectory <cDirectory>.  The
  977.                  specified directory must be completely empty, with no
  978.                  hidden files or subdirectories.
  979.                  
  980.  
  981.  
  982.  
  983.           _________________________________________________________________
  984.           Robocomm 4.0 - Script Language Reference                 Page: 14
  985.  
  986.  
  987.  
  988.  
  989.           
  990.  
  991.  
  992.                  Note: If the specified directory cannot be removed,
  993.                  Robocomm will make a log notation and abort the script
  994.                  processing.
  995.                  
  996.                  Example:
  997.                  
  998.                     RD "C:\GONNER"
  999.                  
  1000.                  See Also:
  1001.                     CD
  1002.                     MD
  1003.                  
  1004.  
  1005.                * RENAME "<cfile>" [TO] "<cNewName>"
  1006.                  
  1007.                  Attempts to rename <cFile> to <cNewName>.  Just as with
  1008.                  DOS, this command will fail if a file names <cNewName>
  1009.                  already exists.  The TO clause is optional, and functions
  1010.                  only to enhance readability.
  1011.                  
  1012.  
  1013.                * RENUMBER "<cFile>" [<nCount>]
  1014.                  
  1015.                  Uses Robocomm's internal renumbering scheme to maintain a
  1016.                  <nCount>   archived versions of <cFile>.  <nCount>
  1017.                  defaults to 1 if not specified.
  1018.                  
  1019.                  Example:
  1020.                  
  1021.                  RENUMBER "VAMPIRE.CAP" 5
  1022.                  
  1023.  
  1024.                * RETURN
  1025.                  
  1026.                  Causes script process control to return to the first valid
  1027.                  command line immediately following the most recent GOSUB
  1028.                  command.
  1029.                  
  1030.                  Example:
  1031.                  
  1032.                     IF SUN GOSUB GETFILES
  1033.                     SEND "BYE|"
  1034.                     EXIT 0
  1035.                  
  1036.                     :GETFILES
  1037.                        MESSAGE "It's Sunday.  Downloading and processing
  1038.                  Allfiles"
  1039.                        RENUMBER "%DLDIR%ALLFILES.ZIP" 2
  1040.  
  1041.  
  1042.  
  1043.           _________________________________________________________________
  1044.           Robocomm 4.0 - Script Language Reference                 Page: 15
  1045.  
  1046.  
  1047.  
  1048.  
  1049.           
  1050.  
  1051.  
  1052.                        SEND "D;ALLFILES.ZIP|"
  1053.                        DOWNLOAD
  1054.                     RETURN
  1055.                  
  1056.                  
  1057.  
  1058.                * RUN "<cDosCommand>" [KEYBOARD "<cKeyString>"]
  1059.                  
  1060.                  Shells to DOS and runs the command <cDosCommand>.  If you
  1061.                  need to test the result of the called process, the
  1062.                  ERRORLEVEL set by the called program is retained by
  1063.                  Robocomm to be queried with the IF ERRORLEVEL script
  1064.                  command.
  1065.                  
  1066.                  Note: Robocomm's current drive and directory is always
  1067.                  restored automatically after the called process returns
  1068.                  control.
  1069.                  
  1070.                  Examples:
  1071.                  
  1072.                     RUN "Rexclude c:\download"
  1073.                  
  1074.                  CAUTION:  If you do not plan on exploring the KEYBOARD
  1075.                  clause, detailed below, be sure not to call any process
  1076.                  from within Robocomm that will require a keypress.  If you
  1077.                  do this and aren't around to manually press the required
  1078.                  key, Robocomm will be unable to recover and all processing
  1079.                  will halt until you show up to rectify the situation.
  1080.                  
  1081.                  Using the KEYBOARD clause:
  1082.                  
  1083.                  In cases where you really want to run an external program
  1084.                  that requires keystrokes, the optional KEYBOARD command
  1085.                  can help.  This command stuffs the keyboard by temporarily
  1086.                  taking over BIOS interrupt 16h.  Thus, you can automate
  1087.                  all or part of the program that you call with Robocomm's
  1088.                  RUN command.  
  1089.                  
  1090.                  This capability was inspired by a memory resident program
  1091.                  called Key-Fake by Charles Petzold and copyrighted by
  1092.                  Ziff-Davis Publishing Company.  Mr. Petzold did an
  1093.                  excellent job and Robocomm imitates, with a few
  1094.                  enhancements, Mr. Petzold's method of defining the keys to
  1095.                  stuff the keyboard.  The KEYBOARD command function works
  1096.                  with almost any programs you might want to call, except
  1097.                  for those rare  programs that directly take over the
  1098.                  keyboard. 
  1099.                  
  1100.  
  1101.  
  1102.  
  1103.           _________________________________________________________________
  1104.           Robocomm 4.0 - Script Language Reference                 Page: 16
  1105.  
  1106.  
  1107.  
  1108.  
  1109.           
  1110.  
  1111.  
  1112.                  The KEYBOARD <cKeyString> is a character string parameter.
  1113.                  This character string can contain:  
  1114.                  
  1115.                     1) embedded character strings.
  1116.                     2) named keys within curly brackets.
  1117.                     3) the number 0 by itself.
  1118.                     4) the number 1 by itself.
  1119.                  
  1120.                  
  1121.                  1) Embedded character strings:  
  1122.                  
  1123.                  Characters within inner quotes (either single or double
  1124.                  quotes) are normal ASCII characters. KEYBOARD
  1125.                  "'EXIT'"would stuff the keyboard with the four keys 'E',
  1126.                  'X', 'I', and 'T'.  
  1127.                  
  1128.                  Normally, these characters are limited to those
  1129.                  alphabetical, numeric, and symbol characters that can be
  1130.                  typed at the keyboard.  Keys such as <F1> and <Insert>
  1131.                  cannot be specified this way.  You can specify other non-
  1132.                  keyboard characters such as graphics characters which are
  1133.                  not normally available from the keyboard.  
  1134.                  
  1135.                  If non- keyboard characters are specified, KEYBOARD will
  1136.                  attempt to pass them to the called program, but some
  1137.                  programs may not be able to accept them.  Please note that
  1138.                  the character string passed to KEYBOARD begins and ends
  1139.                  with double quotes ("), and that the inner string begins
  1140.                  and ends with single quotes (').
  1141.                  
  1142.                  
  1143.                  2) Named keys within curly braces:  
  1144.                  
  1145.                  In order to specify keys such as <F1>, <Insert>, and
  1146.                  <Ctrl-A>, you must specify them within curly braces.
  1147.                  KEYBOARD can handle every possible key combination that
  1148.                  converts to a keycode.  Some keys such as the
  1149.                  <PrintScreen> and <NumLock> have no keycode value and
  1150.                  cannot be stuffed with KEYBOARD.  
  1151.                  
  1152.                  When specifying the keys, case is not important.  You may
  1153.                  use uppercase, lowercase, or mixed case.  The keys are
  1154.                  specified with the form {[<switch>-]keyname} where keyname
  1155.                  is the name of the key optionally preceded by one of the
  1156.                  switch keys: <Shift>, <Ctrl>, <Alt>.  Only one switch key
  1157.                  can be specified because they are mutually exclusive.
  1158.                  When more than one switch key is pressed at a time, the
  1159.  
  1160.  
  1161.  
  1162.  
  1163.           _________________________________________________________________
  1164.           Robocomm 4.0 - Script Language Reference                 Page: 17
  1165.  
  1166.  
  1167.  
  1168.  
  1169.           
  1170.  
  1171.  
  1172.                  <Ctrl> key overrides the <Shift> key and the <Alt> key
  1173.                  overrides the <Ctrl> key. 
  1174.                  
  1175.                  The following keys are valid:  
  1176.                  
  1177.                     {F1}..{F12} 
  1178.                     {Shift-F1}..{Shift-F12}
  1179.                     {Ctrl-F1}..{Ctrl-F12} 
  1180.                     {Alt-F1}..{Alt-F12} 
  1181.                  
  1182.                  Note that F11 and F12 are only available on enhanced
  1183.                  keyboards and may not be accepted by a program running on
  1184.                  a computer with a standard keyboard.  
  1185.                  
  1186.                     {Ctrl-A}..{Ctrl-Z} 
  1187.                     {Alt-A}..{Alt-Z}  
  1188.                     {Ctrl-0}..{Ctrl-9} 
  1189.                     {Alt-0}..{Alt-9} 
  1190.                  
  1191.                  These keys correspond to the keys on both the numeric
  1192.                  keypad and the QWERTY keyboard when a standard keyboard is
  1193.                  in use.  An enhanced keyboard can differentiate between
  1194.                  the numeric keypad and the QWERTY keyboard if the software
  1195.                  enables it to do so.  If the software you're using
  1196.                  requires that the numbers come from the numeric keypad,
  1197.                  use the # symbol explained below.
  1198.                  
  1199.                  {<Symbol>}
  1200.                  {Ctrl-<Symbol>}
  1201.                  {Alt-<Symbol>}
  1202.                  where <Symbol> is anyone of the 30+ symbols available on
  1203.                  the keyboard such as !@#$%&*~_-+={}[]|\:;"'<>,.?.
  1204.                  
  1205.                  {Enter}, {Esc}, {Tab}, {Bksp}, {Space}
  1206.                  {Ctrl-Enter}..{Ctrl-Space}
  1207.                  {Alt-Enter}..{Alt-Space}
  1208.                  
  1209.                  {Home}, {End}, {PgUp}, {PgDn}, {Left}, {Right}, {Up},
  1210.                  {Down}, {Ins}, {Del}
  1211.                  {Ctrl-Home}..{Ctrl-Del}
  1212.                  {Alt-Home}..{Alt-Del}
  1213.                  These keys are all found on the numeric keypad.
  1214.                  
  1215.                  {*Home}, {*End}, {*PgUp}, {*PgDn}, {*Left}, {*Right},
  1216.                  {*Up}, {*Down}, {*Ins}, {*Del}
  1217.                  {Ctrl-*Home}..{Ctrl-*Del}
  1218.                  {Alt-*Home}..{Alt-*Del} 
  1219.  
  1220.  
  1221.  
  1222.  
  1223.           _________________________________________________________________
  1224.           Robocomm 4.0 - Script Language Reference                 Page: 18
  1225.  
  1226.  
  1227.  
  1228.  
  1229.           
  1230.  
  1231.  
  1232.                  where the * symbol stands for the extra cursor control pad
  1233.                  available on enhanced keyboards.  These keys can only be
  1234.                  specified when an enhanced keyboard is in use; these keys
  1235.                  are not available on a standard keyboard.  Use these keys
  1236.                  when the software requires that the keypress be from the
  1237.                  extra cursor control pad.  
  1238.                  
  1239.                  {#0}..{#9}, {#.}, {#}, {#*}, {#-}, {#+}, {#Enter}
  1240.                  {Ctrl-#0}..{Ctrl-#9}, {Ctrl-#.}..{Ctrl-#Enter} 
  1241.                  {Alt-#0}..{Alt-#9}, {Alt-#.}..{Alt-#Enter} 
  1242.                  where the # symbol stands for the numeric keypad.  These
  1243.                  keys can only be specified when an enhanced keyboard is in
  1244.                  use; a standard keyboard does not differentiate the
  1245.                  numeric keypad keys from their QWERTY keyboard
  1246.                  counterparts.  Use these keys when the software requires
  1247.                  that the keypress be from the numeric keypad only.  
  1248.                  
  1249.                  {SysReq} 
  1250.                  notice that the {SysReq} key is specified without the
  1251.                  {Ctrl-} prefix. 
  1252.                  
  1253.                  
  1254.                  3) The number 0 by itself:  
  1255.                  
  1256.                  The number 0 by itself is a special symbol to KEYBOARD; it
  1257.                  tells the function to report back to the called program,
  1258.                  at that point, that the keyboard buffer is empty.  This
  1259.                  should be unnecessary for most programs, but if you find
  1260.                  that at some point the called program seems to clear the
  1261.                  keyboard buffer or lose keystrokes, you may need to use a
  1262.                  0 to fool the program into thinking the keyboard buffer is
  1263.                  empty.  By default, KEYBOARD stuffs a 0 key after each
  1264.                  keystroke.  This makes the external program think that the
  1265.                  keyboard buffer is empty after each keystroke.  This is
  1266.                  necessary because some programs clear the keyboard buffer
  1267.                  after each keystroke.
  1268.                  
  1269.                  4) The number 1 by itself:  
  1270.                  
  1271.                  The number 1 by itself is also a special symbol to
  1272.                  KEYBOARD.  It tells the function to wait for the user to
  1273.                  hit a key before continuing; the keystroke is then passed
  1274.                  directly to the external program.  Obviously, this
  1275.                  capability has limited usefulness in an unattended
  1276.                  environment, but is useful when the user must make a
  1277.                  choice or enter a secret code before KEYBOARD can continue
  1278.                  stuffing more keys.
  1279.                  
  1280.  
  1281.  
  1282.  
  1283.           _________________________________________________________________
  1284.           Robocomm 4.0 - Script Language Reference                 Page: 19
  1285.  
  1286.  
  1287.  
  1288.  
  1289.           
  1290.  
  1291.  
  1292.                  Summary:  
  1293.                  
  1294.                  All of these key definitions can be put in the same
  1295.                  character string.  You are currently limited to stuffing
  1296.                  250 keystrokes into the keyboard.  Some programs take over
  1297.                  the keyboard directly, which keeps Robocomm from stuffing
  1298.                  the keyboard.  There is nothing that can be done about
  1299.                  these programs, but they are definitely in the minority.
  1300.                  
  1301.                  Example:
  1302.                  
  1303.                  Import Robocomm's TRANSFER.LOG into a dBASE database using
  1304.                  FoxPro:
  1305.                  
  1306.                  RUN "foxproln" KEYBOARD "`USE TRANSFER.DBF` {ENTER} `APPE
  1307.                  FROM TRANSFER.LOG` {ENTER} `QUIT` {ENTER}"
  1308.                  
  1309.                  In our doc file, that line wrapped to a second line, but
  1310.                  in your script file, it should be all on one line.
  1311.                  
  1312.                  
  1313.  
  1314.                * SEND "<cString>"
  1315.                  
  1316.                  This command sends one or more characters to the BBS.
  1317.                  Before sending the text, Robocomm will look for the
  1318.                  existence of two special characters; the pipe "|", the
  1319.                  carat "^" and the tilde "~".  Use the pipe character
  1320.                  whenever you would like Robocomm to send a carriage
  1321.                  return.  Use the carat to signify that the next character
  1322.                  is a "control character."   Use the tilde whenever you
  1323.                  would like Robocomm to pause for on half second before
  1324.                  sending the next character.
  1325.                  
  1326.                  Examples:
  1327.                  
  1328.                  SEND "^X^X~~~~^X^X"
  1329.                  
  1330.                  This example sends two "Control-X" characters, pauses for
  1331.                  2 seconds, and then sends another paid of Control-X
  1332.                  characters.  This is the key sequence that is commonly
  1333.                  used to abort a file transfer.
  1334.                  
  1335.                  SEND "B|1|"
  1336.                  
  1337.                  This example sends the letter "B" followed by a carriage
  1338.                  return (ASCII code 13), followed again by the number 1 and
  1339.                  another carriage return.
  1340.  
  1341.  
  1342.  
  1343.           _________________________________________________________________
  1344.           Robocomm 4.0 - Script Language Reference                 Page: 20
  1345.  
  1346.  
  1347.  
  1348.  
  1349.           
  1350.  
  1351.  
  1352.                  
  1353.                  NOTE:  Robocomm does not automatically append a carriage
  1354.                  return to the text you specify between quotes.  If a
  1355.                  carriage return is required, you must supply it by ending
  1356.                  the string with the | or ^M characters.
  1357.                  
  1358.                  SENDING RESERVED CHARACTERS: To send a tilde, carat or
  1359.                  pipe character to the BBS as part of your send string,
  1360.                  simply place a carat before the character.
  1361.                  
  1362.                     ^^    sends    ^
  1363.                     ^~    sends    ~
  1364.                     ^|    sends    |
  1365.                  
  1366.                  
  1367.  
  1368.                * SOUND <nFrequency> <nDuration>
  1369.                  
  1370.                  Creates a sound on the PC's speaker.
  1371.                  
  1372.                  <nFrequency> is a numeric value indicating the desired
  1373.                  frequency, in the range of 37 to 32767.  If not specified,
  1374.                  <nFrequency> defaults to 500.
  1375.                  
  1376.                  <nDuration> is the amount of time to continue the sound,
  1377.                  in 100ths of a second.
  1378.                  
  1379.                  NOTE: If the user has the speaker style option on
  1380.                  Robocomm's General Configuration screen set to SILENT no
  1381.                  sound will be produced.
  1382.                  
  1383.                  For the musical purists in the group, the following is a
  1384.                  table of values to produce standard musical pitches:
  1385.                  
  1386.                  Pitch           Frequency         Pitch          Frequency
  1387.                  ----------------------------------------------------------
  1388.                  C               130.80            mid C          261.70
  1389.                  C#              138.60            C#             277.20
  1390.                  D               146.80            D              293.70
  1391.                  D#              155.60            D#             311.10
  1392.                  E               164.80            E              329.60
  1393.                  F               174.60            F              349.20
  1394.                  F#              185.00            F#             370.00
  1395.                  G               196.00            G              392.00
  1396.                  G#              207.70            G#             415.30
  1397.                  A               220.00            A              440.00
  1398.                  A#              233.10            A#             466.20
  1399.                  B               246.90            B              493.90
  1400.  
  1401.  
  1402.  
  1403.           _________________________________________________________________
  1404.           Robocomm 4.0 - Script Language Reference                 Page: 21
  1405.  
  1406.  
  1407.  
  1408.  
  1409.           
  1410.  
  1411.  
  1412.                                                    C              523.30
  1413.                  ----------------------------------------------------------
  1414.                  
  1415.  
  1416.                * STATISTICS "<cFile>"
  1417.                  
  1418.                  This command places the contents of <cFile> into
  1419.                  Robocomm's internal data structures so that the data can
  1420.                  be viewed later via Robocomm's "Statistics" command on the
  1421.                  Directory-BBS screen.
  1422.                  
  1423.                  NOTE: Robocomm will not import a file longer than 10,240
  1424.                  characters.  Attempts to do so will be ignored.
  1425.                  
  1426.                  Example:
  1427.                  
  1428.                     STATISTICS "%ID%.STS"
  1429.                  
  1430.  
  1431.                * TERMINAL
  1432.                  
  1433.                  Causes Robocomm to jump to terminal and sound an alarm.
  1434.                  Works just like a "Jump to Terminal" agenda item.  If no
  1435.                  one answers the warning bell within one minuite, control
  1436.                  passes back to Robocomm.
  1437.                  
  1438.  
  1439.                * TIMEOUT <nSeconds>
  1440.                  
  1441.                  Sets the number of seconds that all subsequent WAITFOR
  1442.                  commands will allow to pass while they watch for their
  1443.                  intended string.  If <nSeconds> elapses before the match
  1444.                  is found, control will pass to the defined WAITFOR FAILURE
  1445.                  clause, or, if none is defined, to the next executable
  1446.                  statement in the script.
  1447.                  
  1448.                  Example:
  1449.                  
  1450.                  TIMEOUT 30
  1451.                  
  1452.                  See Also:
  1453.                     WAITFOR 
  1454.                  
  1455.  
  1456.                * TITLE "<cString>"
  1457.                  
  1458.                  Sets the script title that will appear in the Script
  1459.                  Selection window on the agenda modification screen.
  1460.  
  1461.  
  1462.  
  1463.           _________________________________________________________________
  1464.           Robocomm 4.0 - Script Language Reference                 Page: 22
  1465.  
  1466.  
  1467.  
  1468.  
  1469.           
  1470.  
  1471.  
  1472.                  Although this statement can appear anywhere within the
  1473.                  script file, you should place it as the first line in the
  1474.                  script, to make the Script Selection window pop-up as
  1475.                  rapidly as possible.  It's also a good idea to indicate
  1476.                  the type of BBS system the script is designed to handle in
  1477.                  the title.
  1478.                  
  1479.                  Example:
  1480.                  
  1481.                     TITLE "(PCBoard)  This is a script title example!"
  1482.                  
  1483.  
  1484.                * UPLOAD "<cFileSpec>" [USING "<cProtocol>"]
  1485.                  
  1486.                  Sends <cFileSpec> to the BBS using <cProtocol>.
  1487.                  
  1488.                  <cFileSpec> may be any valid path and/or filename,
  1489.                  including wildcard characters.  If the optional USING
  1490.                  <cProtocol> clause is specified, then Robocomm will use
  1491.                  the protocol specified.  By default Robocomm will attempt
  1492.                  to use configured file upload protocol.
  1493.                  
  1494.                  Examples:
  1495.                  
  1496.                     UPLOAD "c:\qwks\%ID%.KEY" USING YMODEM-G
  1497.                     UPLOAD "C:\OUTGOING\*.ZIP"
  1498.                  
  1499.  
  1500.                * VENUE "<cVenueCode>"
  1501.                  
  1502.                  Attempts to move to the area of the BBS system specified
  1503.                  by cVenueCode.  Valid codes are:
  1504.                  
  1505.                  Code        Description                         Systems
  1506.                  --------    ---------------------------------   -------
  1507.                  MSGS        Go to the message sub-menu          Wildcat
  1508.                  FILE        Go to the file sub-menu             Wildcat
  1509.                  MAIN        Go to the Main Menu                 PCB/WC
  1510.                  MAIL        Go to the defined QWK door          PCB/WC
  1511.                  PRO         Go to ProDoor                       PCB/Pro
  1512.                  
  1513.                  Examples:
  1514.                  
  1515.                     VENUE MAIL
  1516.                     VENUE MSGS
  1517.                  
  1518.                  See also:
  1519.                  
  1520.  
  1521.  
  1522.  
  1523.           _________________________________________________________________
  1524.           Robocomm 4.0 - Script Language Reference                 Page: 23
  1525.  
  1526.  
  1527.  
  1528.  
  1529.           
  1530.  
  1531.  
  1532.                     JOIN
  1533.                  
  1534.  
  1535.                * WAITFOR "<cString>" [FAILURE <command>]
  1536.                  
  1537.                  Watches for incoming text matching <cString> while
  1538.                  simultaneously watching for any "watches" defined with the
  1539.                  WHEN command.  The amount of time that Robocomm watches
  1540.                  for text is defined separately with the TIMEOUT command.
  1541.                  
  1542.                  If <cString> is recognized within the allotted time,
  1543.                  Robocomm simply proceeds on to the next executable line in
  1544.                  the script.  If, however, <cString> is not recognized,
  1545.                  Robocomm's subsequent behavior depends upon whether the
  1546.                  optional FAILURE clause has been specified.  If a FAILURE
  1547.                  <command> has been specified, Robocomm will immediately
  1548.                  process <command>.  If no FAILURE command is specified,
  1549.                  then an error message is inserted in the log and script
  1550.                  processing is terminated.
  1551.                  
  1552.                  NOTE: Aside from the file transfer commands.  WAITFOR is
  1553.                  the only script command which actually retrieves incoming
  1554.                  text from the comm port receive buffers.  For this reason,
  1555.                  you will see text scrolling in the online window only
  1556.                  while a WAITFOR is being evaluated.
  1557.                  
  1558.                  Examples:
  1559.                  
  1560.                  The following script fragment sets up a number of watches
  1561.                  via the WHEN command and demonstrates the use of the
  1562.                  WAITFOR command in conjunction with them.
  1563.                  
  1564.                     ; A sample script to download ProDoor ZIPMail packets.
  1565.                     ;
  1566.                     ; FOR DEMONSTRATION PURPOSES ONLY -- NOT TESTED 
  1567.                     ;
  1568.                     TIMEOUT 10
  1569.                     WHEN "MORE?" SEND "N|"
  1570.                     WHEN "[ENTER] TO CONTINUE" SEND "|"
  1571.                     WHEN "SCAN MESSAGES" SEND "N|"
  1572.                     WAITFOR "COMMAND?" FAILURE GOTO ERROR
  1573.                  
  1574.                     TIMEOUT 600
  1575.                     SEND "ZIPM|"
  1576.                     WHEN "NO MESSAGES" GOTO NOMAIL
  1577.                     WHEN "NOT ENOUGH TIME" GOTO ERROR
  1578.                     WHEN "PROTOCOL" SEND "Z|"
  1579.                     WAITFOR "CTRL-X ABORTS" FAILURE GOTO ERROR
  1580.  
  1581.  
  1582.  
  1583.           _________________________________________________________________
  1584.           Robocomm 4.0 - Script Language Reference                 Page: 24
  1585.  
  1586.  
  1587.  
  1588.  
  1589.           
  1590.  
  1591.  
  1592.                     RENUMBER "%QWKDIR%%ID%.ZPM" 5
  1593.                     DOWNLOAD "%QWKDIR%%ID%.ZPM"
  1594.                     EXIT 0
  1595.                  
  1596.                     :ERROR
  1597.                        HANGUP
  1598.                        EXIT 1
  1599.                  
  1600.                     ; End of script.
  1601.                  
  1602.                  See Also:
  1603.                     WHEN
  1604.                     TIMEOUT
  1605.                  
  1606.  
  1607.                * WAITUNTIL ["<cTime>"] ["<cDate>"]
  1608.                  
  1609.                  Pauses script execution until a specified date and/or
  1610.                  time.  
  1611.                  
  1612.                  <cTime> is the time of day to start, in 24 hour format
  1613.                  HH:MM
  1614.                  
  1615.                  <cDay> is the date to start in MM/DD/YY or MM-DD-YY
  1616.                  format.
  1617.                  
  1618.                  Both parameters are optional, but at least one must be
  1619.                  specified.  If <cDate> is not specified, it defaults to
  1620.                  the current date.  If <cTime> is not specified, it
  1621.                  defaults to "00:00" (Midnight).
  1622.                  
  1623.                  Examples:
  1624.                  
  1625.                     WAITUNTIL "06:00"
  1626.                     WAITUNTIL "12:00" "12/13/91"
  1627.                     WAITUNTIL "12/01/91"
  1628.                  
  1629.  
  1630.                * WHEN "<cString>" <command>
  1631.                  
  1632.                  Creates an incoming text watch for <cString> and executes
  1633.                  <command> whenever it is seen.  WHEN commands are valuable
  1634.                  when prompts from the BBS may come in random order or when
  1635.                  a standardized response to a prompt should be sent
  1636.                  whenever a certain prompt is received from the BBS.  It is
  1637.                  important to understand that the WHEN command merely posts
  1638.                  <cString> and <command> for evaluation by the WAITFOR
  1639.  
  1640.  
  1641.  
  1642.  
  1643.           _________________________________________________________________
  1644.           Robocomm 4.0 - Script Language Reference                 Page: 25
  1645.  
  1646.  
  1647.  
  1648.  
  1649.           
  1650.  
  1651.  
  1652.                  command.  Thus, WHENs are only valid while a WAITFOR is
  1653.                  currently being evaluated.  
  1654.                  
  1655.                  Example:
  1656.                     See example under the WAITFOR command.
  1657.                  
  1658.                  See Also:
  1659.                     WAITFOR
  1660.                     DISABLE
  1661.                     ENABLE
  1662.                     CLEAR
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.           _________________________________________________________________
  1704.           Robocomm 4.0 - Script Language Reference                 Page: 26
  1705.